package com.tcy.bigevent.anno;

import com.tcy.bigevent.validation.StateValidation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;


@Documented//元注解，描述注解的元数据。内容可以抽取到帮助文档
//元注解，标识注解可以使用在哪个位置(方法？类？属性？)
@Target(ElementType.FIELD)
//元注解，标识注解的声明周期（注解保留到哪个阶段，源码？编译？运行？运行时也要校验）
@Retention(RetentionPolicy.RUNTIME)
//创建一个注解，用于校验state参数的值只能是“已发布”或者“草稿”;指定提供校验规则的类
@Constraint(validatedBy = {StateValidation.class})
public @interface State {
    //提供校验失败后的提示信息
    String message() default "state参数的值只能是\"已发布\"或者\"草稿\"";

    //指定分组
    Class<?>[] groups() default {};

    //负载，获取到State注解的附加信息
    Class<? extends Payload>[] payload() default {};
}
